הסבר על oauth 2
9 תשובות
מיועד בד"כ לרשתות חברתיות על מנת לבצע פעולות בשמו של המשתמש,לדוגמא בפייסבוק אתה יכול לרשום סטטוס בשמו של המשתמש.
ניתן גם לממש רק חלק מהאפשרויות כמו לקבל רק מידע מסויים על מנת להתחבר.
נניח למשל שהאימייל שלי באתר הוא [email protected] והסיסמא היא 123456 עכשיו אם אני מחובר כבר למשתמש שלי בגוגל למה שאני אקליד עוד פעם עוד סיסמא ? במקום זה האתר יכול לוודא מול גוגל שאני באמת אותו אדם ע"י בדיקה של האימייל ובכך למנוע מהמשתמש להכניס סיסמא עוד פעם.
לגבי התהליך עצמו האתר מפנה אותך לאותו צד שלישי [פייסבוק נניח] ,פייסבוק ישאלו אותך האם אתה מעוניין לאפשר לאתר X לגשת לנתונים שלך ואיזה הרשאות הוא מעוניין לקבל ,במידה ואפשרת לאותו אתר לגשת לנתונים פייסבוק תחזיר לאותו אתר token מסויים דרכו הם יוכלו לקבל את כל הנתונים שאפשרת - גיל אימייל שם וכו'
מה זאת אומרת מה שכתבת על גוגל שהוא יכול לזהות אותך על ידי האימייל שלך אם כבר הקשת אותה פעם אחת, מה בלי סיסמא? לא הבנתי את התהליך של זה.
וכל התהליך הזה של הטוקן, זה עובד ככה ?
הוא מחזיר לי טוקן אני שומר אותו בסשיין של היוזר ואז כל פעם שאני בא לבקש בקשה אני שולח את הטוקן הזה ועל ידי זה אני רואה שהיוזר מחובר אצלי?
זה עובד רק אם אתה מחובר לאותו צד שלישי כמובן ,זה לא מנחש מי אתה.
תחשוב שאתה מחובר כבר לגוגל,אז במקום לרשום שוב פעם סיסמא ב phpguide.co.il אתה יכול לבצע התחברות דרך החשבון גוגל בהנחה שהאימייל שנרשמת איתו זה אותו אימייל של המשתמש בגוגל.
אתה יכול לראות את הדוגמא פה באתר אם נרשמת בעזרת gmail.
לגבי האם לשמור את הטוקן הזה,זה מאוד תלוי בשירות ,אתה תצטרך לפרט על מקרה שאתה מנסה לעשות ובהתאם אפשר יהיה לעזור לך.
לא משנה הבנתי. אני ישמח אם תענה לי על השאלה הזאת:
מה ההבדל בין אוטנטיקציה רגילה של LARAVEL למשל לבין אוטנטיקיציה של JSON WEB TOKEN.
נגיד אני רוצה לעשות אצלי בלי קשר לצד שלישי, אוטנטיקציה על בסיס JWT, שאני שולח בHEADER את הטוקן.
מה ההבדל בין התהליך של זה לבין הדרך הרגילה של AUTH:ATTEMPT
שוב,אתה מדבר מאוד בכלליות ומאוד קשה לעזור לך ככה,אם תסביר על מקרה יותר ספציפי יהיה יותר קל לעזור לך.
בכל מקרה ההבדל היחיד הוא שאם אתה שולח על בסיס jwt את הנתונים אז הם מוצפנים [אתה עדיין צריך לעשות auth::attempt] אבל באותה מידה אתה יכול להשתמש ב mcrypt ולהצפין דרכו. [אותו רעיון,המימוש טיפה שונה]
מחלקות ל jwt אתה יכול למצוא כאן -
https://github.com/firebase/php-jwt/blob/master/Authentication/JWT.php
https://code.google.com/p/iap-php/source/browse/iap-php/src/lib/JWT.php
האם יש טעם באמת לשלוח את הנתונים מוצפנים ? זה כבר שאלה שקשה לענות עליה בלי להסביר מה אתה מנסה,אבל בכל מקרה שלא יהיה להצפנה הזאת לא תיהיה יותר מידי משמעות אם אתה לא משתמש בתקשורת מוצפנת.
עריכה -
לא שמתי לב שרשמת "את התוקן" בחלק של ה jwt,בכל מקרה התשובה זהה למעט העניין של ה auth::attempt שאתה לא תצטרך לעשות אבל אני לא רואה מה המטרה של העניין.
למה לא לשלוח משתמש וסיסמא רגיל ?
אני מפתח צד לקוח לאתר עכשיו והם משתמשים בTOKEN כדי לבדוק אם היוזר מחובר אחרי שכמובן הוא עשה לוגין אני שולח להם את זה בHEADER.
אז אני לא מבין גם למה צריך את זה? למה לא משתמשים בשם וסיסמא רגיל? זה כי רוצים שהיוזר ישאר מחובר ולא לתת לו להקיש שם וסיסמא כל פעם?
בגירסאות החדשות של laravel מ 4.1.26 יש עמודה בטבלת משתמשים שנקראת remember_token [לא בהכרח בשם הזה,אבל זה הברירת מחדל] ששם מאוחסן token מסויים שאם יש למשתמש אותו בעוגיה והוא מתאים למשתמש במסד אז אפשר לחבר אותו בתור המשתמש הזה.
העמודה והעוגיה משתנים לבד במידה ואתה מעביר ל login את הפרמטר remember כ true.
עכשיו,אי אפשר לנחש איך האתר הזה עובד משום שמעולם לא ראיתי את הקוד שלו לכן או שתצטרך לחקור לבד מה הולך שם או שתשאל את מי שבנה את זה